<?xml version="1.0" encoding="UTF-8"?>
<!--

       Copyright 2006-2016 the original author or authors.

       Licensed under the Apache License, Version 2.0 (the "License");
       you may not use this file except in compliance with the License.
       You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       See the License for the specific language governing permissions and
       limitations under the License.

-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>The &lt;sqlMapGenerator&gt; Element</title>
    <link rel="stylesheet" type="text/css" href="../mbgstyle.css"/>
</head>
<body>
<h1>The &lt;sqlMapGenerator&gt; Element</h1>
<p>The &lt;sqlMapGenerator&gt; element is used to define properties of the SQL map
    generator. The SQL Map Generator builds a MyBatis/iBATIS formatted SQL map XML file
    for each introspected table.</p>
<p>If iBATIS2 is targeted, then this element is a required child element
    of the <a href="context.html">&lt;context&gt;</a> element.</p>
<p>If MyBatis3 is targeted, then this element is a required child element
    of the <a href="context.html">&lt;context&gt;</a> element only if your chosen
    javaClientGenerator requires XML.</p>
<p>If you do not specify a javaClientGenerator, then
    the following rules apply:</p>
<ul>
    <li>If you specify an sqlMapGenerator, then MBG will generate SQL map XML
        files and model classess only.
    </li>
    <li>If you do not specify an sqlMapGenerator, then MBG will generate
        model classes only.
    </li>
</ul>
<h2>Required Attributes</h2>
<table border="1" cellspacing="0" cellpadding="5">
    <tr>
        <th>Attribute</th>
        <th>Description</th>
    </tr>
    <tr>
        <td valign="top">targetPackage</td>
        <td>This is the package where the generated SQL Maps will be placed. In
            the default generators, the property "enableSubPackages"
            controls how the actual package is calculated. If true,
            then the calculated package will be the targetPackage plus
            sub packages for the table's catalog and schema if they exist.
            If false (the default) then the calculated package will be
            exactly what is specified in the targetPackage attribute.
            MyBatis Generator (MBG) will create folders as required for the generated
            packages.
        </td>
    </tr>
    <tr>
        <td valign="top">targetProject</td>
        <td>This is used to specify a target project for the
            generated SQL maps. When running in the Eclipse
            environment, this specifies the project and source folder where
            the objects will be saved.
            In other environments, this value should be an existing directory
            on the local file system. MBG will not create this directory if
            it does not exist.
        </td>
    </tr>
</table>

<h2>Optional Attributes</h2>
<p>None</p>

<h2>Child Elements</h2>
<ul>
    <li><a href="property.html">&lt;property&gt;</a> (0..N)</li>
</ul>

<h2>Supported Properties</h2>
<p>This table lists the properties of the default SQL Map generators that can be
    specified with the <a href="property.html">&lt;property&gt;</a> child element:</p>
<table border="1" cellspacing="0" cellpadding="5">
    <tr>
        <th>Property Name</th>
        <th>Property Values</th>
    </tr>
    <tr>
        <td valign="top">enableSubPackages</td>
        <td>This property is used to select whether MBG will generate different
            Java packages for the objects based on the catalog and schema of the
            introspected table.
            <p>For example, suppose a table MYTABLE in schema MYSCHMA.
                Also suppose that the targetPackage attribute is set to "com.mycompany".
                If this property is true, the generated SQL Map for the table will be placed in
                the package "com.mycompany.myschema". If the property is false, the generated
                SQL Map will be placed in the "com.mycompany" schema.</p>
            <p><i>The default value is false.</i></p></td>
    </tr>
</table>

<h2>Example</h2>
<p>This element specifies that we always want to place generated SQL Maps
    in the "'test.model" package and that we want to use subpackages based on the
    table schema and catalog.</p>
<pre>
&lt;sqlMapGenerator targetPackage="test.model"
     targetProject="\MyProject\src"&gt;
  &lt;property name="enableSubPackages" value="true" /&gt;
&lt;/sqlMapGenerator&gt;
</pre>

</body>
</html>
